<?php if(!defined('IN_WDPHP'))exit('No direct script access.');
/**
 * WDPHP  			Action类
 * @package 		WDPHP
 * @author 			肖伟 
 * @version 		v1.0
 * @copyright 		Copyright (c) 2012. widuu.com
 */
	class Action extends WdTpl{
		/**
		 * 该方法用来运行框架中的操制器，在wdpphp.php入口文件中调用
		 */
		function run(){
		
			//设置覆盖smarty的标签的方法
			if($this->left_delimiter!="<{")
				parent::__construct();	

			
			//如果有子类Common，调用这个类的init()方法 做权限控制
			if(method_exists($this, "init")){
				$this->init();
			}

			//根据动作去找对应的方法
			$action=empty($_GET['a'])?'index':strtolower($_GET['a']);
			if(method_exists($this, $action)){
				$this->$action();
			}else{
				Debug::addmsg("<font color='red'>没有{$_GET["a"]}这个操作！</font>");
			}	
		}

		/** 
		 * 用于在控制器中进行位置重定向
		 * @param	string	$path	用于设置重定向的位置
		 * @param	string	$args 	用于重定向到新位置后传递参数
		 * 
		 * $this->R("index")  /当前模块/index
		 * $this->R("user/index") /user/index
		 * $this->R("user/index", 'page/5') /user/index/page/5
		 */
		
		function R($path, $args=""){
			$path=trim($path, "/");
			if($args!="")
				$args="/".trim($args, "/");
			if(strstr($path, "/")){
				$url=$path.$args;
			}else{
				$url=$_GET["m"]."/".$path.$args;
			}

			$uri=__APP__.$url;
			//使用js跳转前面可以有输出
			echo '<script>';
			echo 'location="'.$uri.'"';
			echo '</script>';
		}

		/**
		 * 成功的消息提示框
		 * @param	string	$mess		用示输出提示消息
		 * @param	int		$time	设置跳转的时间，单位：秒
		 * @param	string	$location	设置跳转的新位置
		 */
		function success($mess="操作成功", $time=1, $location=""){
			$this->pub($mess, $time, $location);
			$this->display("Public/success");
			exit;
		}
		/**
		 * 失败的消息提示框
		 * @param	string	$mess		用示输出提示消息
		 * @param	int		$time	设置跳转的时间，单位：秒
		 * @param	string	$location	设置跳转的新位置
		 */
		function error($mess="操作失败", $time=3, $location=""){
			$this->pub($mess, $time, $location);
			$this->display("Public/success");
			exit;
		}

		private function pub($mess, $timeout, $location){	
			$this->caching=0;     //设置缓存关闭
			if($location==""){
				$location="window.history.back();";
			}else{
				$path=trim($location, "/");
			
				if(strstr($path, "/")){
					$url=$path;
				}else{
					$url=$_GET["m"]."/".$path;
				}
				$location=__APP__.$url;
				$location="window.location='{$location}'";
			}
			$this->assign("mess", $mess);
			$this->assign("time", $timeout);
			$this->assign("location", $location);
			$GLOBALS["debug"]=0;
		}

	}
